Computer Programming Stack এর অপারেশন: Push, Pop, Peek গাইড ও নোট

439

Stack হল একটি ডেটা স্ট্রাকচার যা LIFO (Last In, First Out) পদ্ধতি অনুসরণ করে। স্ট্যাকের মূল অপারেশনগুলির মধ্যে Push, Pop, এবং Peek অন্তর্ভুক্ত রয়েছে। নিচে এই অপারেশনগুলির বিস্তারিত আলোচনা এবং C প্রোগ্রামিং ভাষায় উদাহরণ দেওয়া হলো।


১. Push অপারেশন

Push অপারেশন স্ট্যাকের শীর্ষে একটি নতুন উপাদান যুক্ত করার জন্য ব্যবহৃত হয়। এটি সাধারণত মেমরিতে একটি নতুন স্থান বরাদ্দ করে এবং শীর্ষ পয়েন্টারকে আপডেট করে।

উদাহরণ:

#include <stdio.h>
#include <stdlib.h>

#define MAX 100 // Stack এর সর্বাধিক সাইজ

struct Stack {
    int items[MAX]; // Stack উপাদানগুলির জন্য অ্যারে
    int top;        // Stack এর শীর্ষের ইনডেক্স
};

// Stack তৈরি এবং ইনিশিয়ালাইজেশন
void initStack(struct Stack* s) {
    s->top = -1; // Stack খালি
}

// Push অপারেশন
void push(struct Stack* s, int value) {
    if (s->top == MAX - 1) {
        printf("Stack Overflow! Cannot push %d\n", value);
    } else {
        s->items[++(s->top)] = value; // নতুন উপাদান যোগ করা
        printf("%d pushed to stack\n", value);
    }
}

২. Pop অপারেশন

Pop অপারেশন স্ট্যাকের শীর্ষ থেকে একটি উপাদান অপসারণ করে এবং সেই উপাদানটি ফেরত দেয়। যদি স্ট্যাক খালি হয়, তাহলে এটি একটি ত্রুটি নির্দেশ করে।

উদাহরণ:

// Pop অপারেশন
int pop(struct Stack* s) {
    if (s->top == -1) {
        printf("Stack Underflow! Cannot pop\n");
        return -1; // ত্রুটি নির্দেশ
    } else {
        return s->items[(s->top)--]; // শীর্ষ থেকে উপাদান অপসারণ করা
    }
}

৩. Peek অপারেশন

Peek অপারেশন স্ট্যাকের শীর্ষে থাকা উপাদানটি দেখায় কিন্তু সেটি অপসারণ করে না। এটি স্ট্যাকের অবস্থা জানার জন্য ব্যবহৃত হয়।

উদাহরণ:

// Peek অপারেশন
int peek(struct Stack* s) {
    if (s->top == -1) {
        printf("Stack is empty! No top element\n");
        return -1; // ত্রুটি নির্দেশ
    } else {
        return s->items[s->top]; // শীর্ষ উপাদান দেখানো
    }
}

৪. সম্পূর্ণ প্রোগ্রাম উদাহরণ

#include <stdio.h>
#include <stdlib.h>

#define MAX 100 // Stack এর সর্বাধিক সাইজ

struct Stack {
    int items[MAX]; // Stack উপাদানগুলির জন্য অ্যারে
    int top;        // Stack এর শীর্ষের ইনডেক্স
};

// Stack তৈরি এবং ইনিশিয়ালাইজেশন
void initStack(struct Stack* s) {
    s->top = -1; // Stack খালি
}

// Push অপারেশন
void push(struct Stack* s, int value) {
    if (s->top == MAX - 1) {
        printf("Stack Overflow! Cannot push %d\n", value);
    } else {
        s->items[++(s->top)] = value; // নতুন উপাদান যোগ করা
        printf("%d pushed to stack\n", value);
    }
}

// Pop অপারেশন
int pop(struct Stack* s) {
    if (s->top == -1) {
        printf("Stack Underflow! Cannot pop\n");
        return -1; // ত্রুটি নির্দেশ
    } else {
        return s->items[(s->top)--]; // শীর্ষ থেকে উপাদান অপসারণ করা
    }
}

// Peek অপারেশন
int peek(struct Stack* s) {
    if (s->top == -1) {
        printf("Stack is empty! No top element\n");
        return -1; // ত্রুটি নির্দেশ
    } else {
        return s->items[s->top]; // শীর্ষ উপাদান দেখানো
    }
}

// Main ফাংশন
int main() {
    struct Stack stack; // Stack তৈরি
    initStack(&stack);  // Stack ইনিশিয়ালাইজেশন

    push(&stack, 10);   // Stack এ উপাদান যুক্ত করা
    push(&stack, 20);
    push(&stack, 30);

    printf("Top element is %d\n", peek(&stack)); // Peek করা

    printf("%d popped from stack\n", pop(&stack)); // Pop অপারেশন
    printf("Top element is now %d\n", peek(&stack)); // Peek করা

    return 0;
}
Content added By
Promotion

Are you sure to start over?

Loading...